home *** CD-ROM | disk | FTP | other *** search
/ Aminet 44 / Aminet 44 (2001)(GTI - Schatztruhe)[!][Aug 2001].iso / Aminet / util / misc / Lgui.lha / LGUI / LGUI_Sources / Speech_File_Renumberer.e < prev    next >
Encoding:
Text File  |  1992-09-02  |  5.9 KB  |  304 lines

  1. OPT PREPROCESS,OSVERSION=39
  2.  
  3. MODULE 'icon', 'dos/dos', 'exec/memory',
  4.        'intuition/intuition', 'workbench/startup', 'workbench/workbench'
  5.  
  6. ENUM ERR_NONE, ERR_STG, ERR_CHDV
  7.  
  8. RAISE ERR_STG IF String()=0
  9.  
  10. DEF z, vle, ld=0:PTR TO CHAR, sft=0:PTR TO CHAR, spos=1:PTR TO INT,
  11.     epos=2:PTR TO INT, aslBuf[100]:STRING, dtg=0:PTR TO CHAR
  12.  
  13. PROC main() HANDLE
  14. DEF fma=0:PTR TO LONG
  15. checkConfig()
  16. renumberSpeechFile()
  17. EXCEPT DO
  18. IF (fma:=AllocMem(8000000, 0))<>0 THEN FreeMem(fma, 8000000)
  19. CleanUp()
  20. ENDPROC
  21.  
  22. PROC checkConfig()
  23. DEF olddir, ckstg, argv:PTR TO LONG, rdargs, wbstartup:PTR TO wbstartup,
  24.     wbarg:PTR TO wbarg, ck=0:PTR TO CHAR, dobj:PTR TO diskobject, toolarray
  25. argv:=[0, 0, 0, 0, 0]
  26. IF (iconbase:=OpenLibrary('icon.library', 39))<>0
  27. IF wbmessage=0
  28. IF rdargs:=ReadArgs('FILEDEVICE/K,SPEECHFILETYPE/K,STARTPOS/K,STOPPOS/K,INCREASE/K', argv, 0)
  29. IF ck:=StrCmp(UpperStr(argv[0]), 'DH0:', ALL)
  30. ld:=1
  31. ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'WORK:', ALL)
  32. ld:=2
  33. ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'DF0:', ALL)
  34. ld:=3
  35. ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'DF1:', ALL)
  36. ld:=4
  37. ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'DF2:', ALL)
  38. ld:=5
  39. ELSEIF ck:=StrCmp(UpperStr(argv[0]), 'DF3:', ALL)
  40. ld:=6
  41. ENDIF
  42. IF ck:=StrCmp(UpperStr(argv[1]), 'FNS', ALL)
  43. sft:=0
  44. ELSEIF ck:=StrCmp(UpperStr(argv[1]), 'FSS', ALL)
  45. sft:=1
  46. ENDIF
  47. IF argv[2]
  48. spos:=Val(argv[2])
  49. IF ((spos<1) OR (spos>1499))
  50. spos:=1
  51. ENDIF
  52. ENDIF
  53. IF argv[3]
  54. epos:=Val(argv[3])
  55. IF (((epos<2) OR (epos>1500)) OR (epos=spos))
  56. epos:=spos+1
  57. ENDIF
  58. ENDIF
  59. IF ck:=StrCmp(UpperStr(argv[4]), 'YES', ALL)
  60. dtg:=0
  61. ELSEIF ck:=StrCmp(UpperStr(argv[4]), 'NO', ALL)
  62. dtg:=1
  63. ENDIF
  64. FreeArgs(rdargs)
  65. ELSE
  66. errreq(' Incorrect ARGS Supplied', 'Default ARGS Used')
  67. ENDIF
  68. ELSE
  69. wbstartup:=wbmessage
  70. wbarg:=wbstartup.arglist
  71. FOR z:=0 TO wbstartup.numargs-1
  72. olddir:=-1
  73. IF wbarg.lock<>0 AND (wbarg.name[]<>0)
  74. olddir:=CurrentDir(wbarg.lock)
  75. ENDIF
  76. IF (wbarg.name[]<>0) AND (dobj:=GetDiskObject(wbarg.name))
  77. toolarray:=dobj.tooltypes
  78. IF ckstg:=FindToolType(toolarray, 'FILEDEVICE')
  79. IF MatchToolValue(ckstg, 'DH0:')
  80. ld:=1
  81. ELSEIF MatchToolValue(ckstg, 'WORK:')
  82. ld:=2
  83. ELSEIF MatchToolValue(ckstg, 'DF0:')
  84. ld:=3
  85. ELSEIF MatchToolValue(ckstg, 'DF1:')
  86. ld:=4
  87. ELSEIF MatchToolValue(ckstg, 'DF2:')
  88. ld:=5
  89. ELSEIF MatchToolValue(ckstg, 'DF3:')
  90. ld:=6
  91. ENDIF
  92. ENDIF
  93. IF ckstg:=FindToolType(toolarray, 'SPEECHFILETYPE')
  94. IF MatchToolValue(ckstg, 'FNS')
  95. sft:=0
  96. ELSEIF MatchToolValue(ckstg, 'FSS')
  97. sft:=1
  98. ENDIF
  99. ENDIF
  100. IF ckstg:=FindToolType(toolarray, 'STARTPOS')
  101. spos:=Val(ckstg)
  102. IF ((spos<1) OR (spos>1499))
  103. spos:=1
  104. ENDIF
  105. ENDIF
  106. IF ckstg:=FindToolType(toolarray, 'STOPPOS')
  107. epos:=Val(ckstg)
  108. IF (((epos<2) OR (epos>1500)) OR (epos=spos))
  109. epos:=spos+1
  110. ENDIF
  111. ENDIF
  112. IF ckstg:=FindToolType(toolarray, 'INCREASE')
  113. IF MatchToolValue(ckstg, 'YES')
  114. dtg:=0
  115. ELSEIF MatchToolValue(ckstg, 'NO')
  116. dtg:=1
  117. ENDIF
  118. ENDIF
  119. FreeDiskObject(dobj)
  120. ELSEIF wbarg.name[]=0
  121. errreq(' ICON Is The Wrong Type', 'Default ARGS Used')
  122. ELSE
  123. errreq(' Cannot Find DISKOBJECT', 'Default ARGS Used')
  124. ENDIF
  125. IF olddir<>-1
  126. CurrentDir(olddir)
  127. ENDIF
  128. wbarg++
  129. ENDFOR
  130. ENDIF
  131. IF iconbase<>0
  132. CloseLibrary(iconbase)
  133. ENDIF
  134. ELSE
  135. errreq(' Cannot Open Icon.Library', 'Default ARGS Used')
  136. ENDIF
  137. IF ld=0
  138. StrCopy(aslBuf, 'RAM:')
  139. ELSEIF ld=1
  140. StrCopy(aslBuf, 'DH0:')
  141. ELSEIF ld=2
  142. StrCopy(aslBuf, 'WORK:')
  143. ELSEIF ld=3
  144. StrCopy(aslBuf, 'DF0:')
  145. ELSEIF ld=4
  146. StrCopy(aslBuf, 'DF1:')
  147. ELSEIF ld=5
  148. StrCopy(aslBuf, 'DF2:')
  149. ELSEIF ld=6
  150. StrCopy(aslBuf, 'DF3:')
  151. ENDIF
  152. StrAdd(aslBuf, 'LanguageGUI/', ALL)
  153. ENDPROC
  154.  
  155. PROC errreq(title:PTR TO CHAR, text:PTR TO CHAR)
  156. EasyRequestArgs(0, [SIZEOF easystruct, 0, title, text, 'O.K']:easystruct, 0, 0)
  157. ENDPROC
  158.  
  159. PROC renumberSpeechFile()
  160. DEF fh, nl:PTR TO INT, chr:PTR TO CHAR, tmp=0:PTR TO CHAR, ck=0:PTR TO CHAR,
  161.     pos=0:PTR TO CHAR, flname:PTR TO CHAR, fl, sv, vb=1:PTR TO INT,
  162.     ve=1499:PTR TO INT
  163. chr:=String(4)
  164. StrCopy(chr, '    ', ALL)
  165. flname:=String(100)
  166. StrCopy(flname, '                                                                                                    ', ALL)
  167. StrCopy(flname, aslBuf, ALL)
  168. IF sft=0
  169. StrAdd(flname, 'FNSpeech.Lgui', ALL)
  170. ELSEIF sft=1
  171. StrAdd(flname, 'FSSpeech.Lgui', ALL)
  172. ENDIF
  173. IF dtg=1
  174. vb:=2
  175. ve:=1500
  176. ENDIF
  177. WriteF('\n*** SPEECH FILE - \s ***\n\n', flname)
  178. fl:=FileLength(flname)
  179. IF fl>21
  180. tmp:=NewM(fl, MEMF_PUBLIC OR MEMF_CLEAR)
  181. IF fh:=Open(flname, MODE_OLDFILE)
  182. nl:=Read(fh, tmp, fl)
  183. Close(fh)
  184. IF nl=fl
  185. REPEAT
  186. INC pos
  187. UNTIL ((pos>=fl) OR (Char(tmp+pos)=42))
  188. IF pos<fl
  189. pos:=pos+2
  190. REPEAT
  191. IF ((Char(tmp+pos)=35) OR (Char(tmp+pos)=37))
  192. FOR z:=1 TO 4 DO chr[z]:=Char(tmp+pos+z)
  193. vle:=Val(chr)
  194. IF ((vle>=vb) AND (vle<=ve))
  195. IF ((vle>=spos) AND (vle<=epos))
  196. IF dtg=0
  197. sv:=chr[4]
  198. INC sv
  199. chr[4]:=sv
  200. IF sv>57
  201. chr[4]:=48
  202. sv:=chr[3]
  203. INC sv
  204. chr[3]:=sv
  205. IF sv>57
  206. chr[3]:=48
  207. sv:=chr[2]
  208. INC sv
  209. chr[2]:=sv
  210. IF sv>57
  211. chr[2]:=48
  212. sv:=chr[1]
  213. INC sv
  214. chr[1]:=sv
  215. IF sv>57
  216. chr[1]:=48
  217. ENDIF
  218. ENDIF
  219. ENDIF
  220. ENDIF
  221. ELSE
  222. sv:=chr[4]
  223. DEC sv
  224. chr[4]:=sv
  225. IF sv<48
  226. chr[4]:=57
  227. sv:=chr[3]
  228. DEC sv
  229. chr[3]:=sv
  230. IF sv<48
  231. chr[3]:=57
  232. sv:=chr[2]
  233. DEC sv
  234. chr[2]:=sv
  235. IF sv<48
  236. chr[2]:=57
  237. sv:=chr[1]
  238. DEC sv
  239. chr[1]:=sv
  240. IF sv<48
  241. chr[1]:=57
  242. ENDIF
  243. ENDIF
  244. ENDIF
  245. ENDIF
  246. ENDIF
  247. FOR z:=1 TO 4
  248. sv:=chr[z]
  249. PutChar(tmp+pos+z, sv)
  250. ENDFOR
  251. ENDIF
  252. ENDIF
  253. ELSE
  254. WriteF('\nError: Speech File is Invalid - An incorrect Character has been found.\n')
  255. Raise(ERR_CHDV)
  256. ENDIF
  257. pos:=pos+6
  258. IF Char(tmp+pos)<>10
  259. REPEAT
  260. INC pos
  261. UNTIL ((pos>=fl) OR (Char(tmp+pos)=42))
  262. pos:=pos+2
  263. ENDIF
  264. UNTIL pos>=fl
  265. IF fh:=Open(flname, MODE_NEWFILE)
  266. nl:=Write(fh, tmp, fl)
  267. Close(fh)
  268. IF nl<>fl
  269. ck:=2
  270. ENDIF
  271. ELSE
  272. ck:=1
  273. ENDIF
  274. IF ck>0
  275. IF ck=1
  276. WriteF('\n\s was NOT Saved.\n', flname)
  277. ELSEIF ck=2
  278. WriteF('\n\s was PARTLY Saved.\n', flname)
  279. ENDIF
  280. ELSE
  281. WriteF('\n\s was Saved.\n', flname)
  282. ENDIF
  283. ELSE
  284. WriteF('\nError: Could not find a * End Marker.\n')
  285. ENDIF
  286. ELSE
  287. WriteF('\nERROR: \s was only Partly Read.\n', flname)
  288. Raise(ERR_CHDV)
  289. ENDIF
  290. ELSE
  291. WriteF('\nERROR: \s was Not Opened.\n', flname)
  292. Raise(ERR_CHDV)
  293. ENDIF
  294. ELSEIF ((fl>=0) AND (fl<22))
  295. WriteF('\nERROR: \s was Too Small.\n', flname)
  296. Raise(ERR_CHDV)
  297. ELSE
  298. WriteF('\nERROR: \s was Not Found.\n', flname)
  299. Raise(ERR_CHDV)
  300. ENDIF
  301. IF chr THEN DisposeLink(chr)
  302. IF flname THEN DisposeLink(flname)
  303. ENDPROC
  304.